fn main() {
	// check the current type of a sum type: is, !is
	x := Alphabet(Abc{'test'}) // sum type
	if x is Abc {
		// x is automatically casted to Abc and can be used here
		println(x)
	}

	if x !is Abc {
		println('Not Abc')
	}

	// using match
	match x {
		Abc {
			// x is automatically casted to Abc and can be used here
			println(x)
		}
		Xyz {
			// x is automatically casted to Xyz and can be used here
			println(x)
		}
	}
}

struct Abc {
	val string
}

struct Xyz {
	foo string
}

type Alphabet = Abc | Xyz
